package san.java.day10;

/**
 * 抛出异常:
 *  1. 使用throw在执行方抛出异常,在调用方处理异常
 *  2. 一般不在main方法上抛出异常
 *
 * 重写方法声明抛出异常的原则:
 *  1. 重写方法不能抛出比重写方法范围更大的异常类型
 */

public class ThrowException_03 {
    public static void main(String[] args) {
        B b = new B();
        try {  // 使用throw在执行方抛出异常,在调用方处理异常
            b.test();
        } catch (Exception e) {
            e.printStackTrace();
        }

        try {
            b.test1(-100);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

class B {
    int i;

    int age;

    // NullPointerException的父类是Exception
    public void test() throws NullPointerException{
        B b = null;
        System.out.println(b.i);
    }

    public void test1(int age) throws MyException{
        if (age >= 0 && age <= 150)
        {
            this.age = age;
            System.out.println("年龄是: " + this.age);
        } else {
            throw new MyException("年龄不合法");

        }
    }
}
